package org.apache.commons.net.ntp; /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import java.net.DatagramPacket; /** * Interface for a NtpV3Packet with get/set methods corresponding to the fields * in the NTP Data Message Header described in RFC 1305. * * @author Naz Irizarry, MITRE Corp * @author Jason Mathews, MITRE Corp * @version $Revision: 489397 $ $Date: 2006-12-21 16:28:51 +0000 (Thu, 21 Dec 2006) $ */ public interface NtpV3Packet { /** * Standard NTP UDP port */ public static final int NTP_PORT = 123; public static final int LI_NO_WARNING = 0; public static final int LI_LAST_MINUTE_HAS_61_SECONDS = 1; public static final int LI_LAST_MINUTE_HAS_59_SECONDS = 2; public static final int LI_ALARM_CONDITION = 3; /* mode options */ public static final int MODE_RESERVED = 0; public static final int MODE_SYMMETRIC_ACTIVE = 1; public static final int MODE_SYMMETRIC_PASSIVE = 2; public static final int MODE_CLIENT = 3; public static final int MODE_SERVER = 4; public static final int MODE_BROADCAST = 5; public static final int MODE_CONTROL_MESSAGE = 6; public static final int MODE_PRIVATE = 7; public static final int NTP_MINPOLL = 4; // 16 seconds public static final int NTP_MAXPOLL = 14; // 16284 seconds public static final int NTP_MINCLOCK = 1; public static final int NTP_MAXCLOCK = 10; public static final int VERSION_3 = 3; public static final int VERSION_4 = 4; /* possible getType values such that other time-related protocols can * have its information represented as NTP packets */ public static final String TYPE_NTP = "NTP"; // RFC-1305/2030 public static final String TYPE_ICMP = "ICMP"; // RFC-792 public static final String TYPE_TIME = "TIME"; // RFC-868 public static final String TYPE_DAYTIME = "DAYTIME"; // RFC-867 /** * @return a datagram packet with the NTP parts already filled in */ public DatagramPacket getDatagramPacket(); /** * Set the contents of this object from the datagram packet */ public void setDatagramPacket(DatagramPacket dp); /** * @return leap indicator as defined in RFC-1305 */ public int getLeapIndicator(); /** * Set leap indicator. * @param li - leap indicator code */ public void setLeapIndicator(int li); /** * @return mode as defined in RFC-1305 */ public int getMode(); /** * @return mode as human readable string; e.g. 3=Client */ public String getModeName(); /** * Set mode as defined in RFC-1305 */ public void setMode(int mode); /** * @return poll interval as defined in RFC-1305. * Field range between NTP_MINPOLL and NTP_MAXPOLL. */ public int getPoll(); /** * Set poll interval as defined in RFC-1305. * Field range between NTP_MINPOLL and NTP_MAXPOLL. */ public void setPoll(int poll); /** * @return precision as defined in RFC-1305 */ public int getPrecision(); /** * @return root delay as defined in RFC-1305 */ public int getRootDelay(); /** * @return root delay in milliseconds */ public double getRootDelayInMillisDouble(); /** * @return root dispersion as defined in RFC-1305 */ public int getRootDispersion(); /** * @return root dispersion in milliseconds */ public long getRootDispersionInMillis(); /** * @return root dispersion in milliseconds */ public double getRootDispersionInMillisDouble(); /** * @return version as defined in RFC-1305 */ public int getVersion(); /** * Set version as defined in RFC-1305 */ public void setVersion(int mode); /** * @return stratum as defined in RFC-1305 */ public int getStratum(); /** * Set stratum as defined in RFC-1305 */ public void setStratum(int stratum); /** * @return the reference id string */ public String getReferenceIdString(); /** * @return the reference id (32-bit code) as defined in RFC-1305 */ public int getReferenceId(); /** * Set reference clock identifier field. * @param refId */ public void setReferenceId(int refId); /** * @return the transmit timestamp as defined in RFC-1305 */ public TimeStamp getTransmitTimeStamp(); /** * @return the reference time as defined in RFC-1305 */ public TimeStamp getReferenceTimeStamp(); /** * @return the originate time as defined in RFC-1305 */ public TimeStamp getOriginateTimeStamp(); /** * @return the receive time as defined in RFC-1305 */ public TimeStamp getReceiveTimeStamp(); /** * Set the transmit timestamp given NTP TimeStamp object. * @param ts - timestamp */ public void setTransmitTime(TimeStamp ts); /** * Set the reference timestamp given NTP TimeStamp object. * @param ts - timestamp */ public void setReferenceTime(TimeStamp ts); /** * Set originate timestamp given NTP TimeStamp object. * @param ts - timestamp */ public void setOriginateTimeStamp(TimeStamp ts); /** * Set receive timestamp given NTP TimeStamp object. * @param ts - timestamp */ public void setReceiveTimeStamp(TimeStamp ts); /** * Return type of time packet. The values (e.g. NTP, TIME, ICMP, ...) * correspond to the protocol used to obtain the timing information. * * @return packet type string identifier */ public String getType(); }